Many enterprises engage in commercial transactions. For instance, the financial industry frequently processes a high volume of payment transactions through multiple servers. Financial institutions, such as banks, handle numerous amounts of deposits, withdrawals, transfers, and the like on a daily basis. Because many of these transactions are time-sensitive, the transactions need to be processed efficiently.
To handle a high volume of transactions efficiently, servers process the transactions concurrently. Such processing may be executed using resources of each server. However, bottlenecks or non-concurrent pinch points may occur at different processing states for each transaction. These bottlenecks and pinch points hinder the ability of the servers to efficiently process the transactions.
Identifying where concurrency bottlenecks occur during processing may aid in preventing them from happening. One approach to do so is to examine and debug application code used to process the transactions. However, this approach presents several concerns. For example, the application code might be unavailable to an individual desiring to identify the bottlenecks. Further, even if the code is available, the individual might not have a thorough understanding of the application code.